package com.Blog.www.dao;

import com.Blog.www.po.User;

import java.util.List;

/**
 * 用户操作
 *
 * @author 君未洋
 */
public interface UserDao {
    /**
     * 用户登录查询用方法
     *
     * @param loginUser 用户封装类
     * @return 返回查询到的用户
     */
    User login(User loginUser);

    /**
     * 注册用户用的方法
     *
     * @param user     用户封装类
     * @param identity 要注册的身份
     * @return 返回操作成功与否
     */
    Boolean regist(User user, String identity);

    /**
     * 查询用户账号是否重复的
     *
     * @param account 要查重的账号
     * @return 返回操作成功与否
     */
    Boolean getAccount(int account);


    /**
     * 查询对应状态的用户的总数
     *
     * @param status   状态
     * @param identity 身份
     * @return 总记录数
     */
    int findUserTotalCount(String status, String identity);

    /**
     * 搜索相对的状态的用户
     *
     * @param start  开始查的页面
     * @param rows   每页显示的条数
     * @param status 状态
     * @param id     用户id
     * @return 返回封装的集合
     */
    List<User> findUserList(int start, int rows, String status, String id);

    /**
     * 修改指定id的用户的状态方法
     *
     * @param id     用户id
     * @param status 哟啊修改的状态
     * @return 返回操作成功与否
     */
    Boolean changerUser(int id, String status);


    /**
     * 用户查询方法
     *
     * @param username 用户名
     * @param account  账号
     * @return 返回查询到的用户类集合
     */
    User getUser(String username, String account);

    /**
     * 通过id索引的用户查询方法
     *
     * @param id     用户id
     * @param status 用户状态
     * @return 用封装类
     */
    User getUser(int id, String status);


    /**
     * 修改用户密码用的
     *
     * @param id       用户id
     * @param password 修改的新密码
     * @return 返回操作成功与否
     */
    boolean changePassword(int id, String password);

    /**
     * 通过用户id删除对应用户
     *
     * @param id 用户id
     * @return 返回成功与否
     */
    Boolean delete(String id);


    /**
     * 添加图片的路径到数据库表格中
     *
     * @param imgPath 图片路径
     * @param user    要添加的用户
     * @return 返回添加成功与否
     */
    Boolean addImg(String imgPath, User user);

    /**
     * 设置封禁用户的时间
     * @param userId 用户id
     * @param time 封禁时间
     * @return 返回成功与否
     */
    boolean banTime(String userId, Long time);
}
